﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using GBL.Repository.Resources;
using GBlason.ViewModel.CoatOfArm;
using GBlasonLogic.Tools;

namespace GBlason.ViewModel.Contract
{
    /// <summary>
    /// Contain the mark and the features for all the divisible area of the CoA
    /// </summary>
    interface IDivisible
    {
        /// <summary>
        /// Adds one division to the parent component.
        /// </summary>
        /// <param name="division">The division.</param>
        void AddDivision(DivisionViewModel division);

        /// <summary>
        /// Gets the divisible visibility.
        /// </summary>
        Visibility DivisibleVisibility { get; }

        /// <summary>
        /// Gets the constraints.
        /// </summary>
        /// <returns></returns>
        ConstraintDivisionSet GetDivisionsConstraints();

        /// <summary>
        /// Removes the division from the parent component.
        /// </summary>
        /// <param name="component">The component.</param>
        void RemoveDivision(DivisionViewModel component);
    }
}
